﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Data.Common;
using Biblioteca.DataBase;
using Pms.Utils;
using SERIX.Util;
using Biblioteca.Utils;
using Biblioteca.Objetos;

namespace SERIX
{
    public partial class Territorios : Seguranca
    {
        CriteriosPesquisa criteriosPesquisa;
        string _tabelaName = null;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                switch (Criptografia.Descriptografar(Request["tpo"]))
                {
                    case "C": {
                        _tabelaName = "_CID";
                        lbTerritorio.Text = "Território da Cidadania";
                        break; 
                    }
                    case "P": {
                        _tabelaName = "";
                        lbTerritorio.Text = "Território de Planejamento";
                        break; 
                    }
                }
            }
            base.OnLoad(e);
            btnNovo.Enabled = PermissaoManut.Equals(Constantes.PERM_MANUTENCAO);
            InicializarCriteriosPesquisa();
            if (!RestaurarPesquisa() && !Page.IsPostBack)
            {
                SalvarPesquisa();
                Navegador1.CarregueBotoes(0);
                Pesquisar();
            }
            Navegador1.Pesquisar += new SERIX.Controles.Navegador.PesquisarDelegate(Pesquisar);
            txtFiltrar.Focus();
        }

        private void InicializarCriteriosPesquisa()
        {
            criteriosPesquisa = (CriteriosPesquisa)Session[Page.ToString()];
        }

        private void SalvarPesquisa()
        {
            if (criteriosPesquisa == null)
            {
                criteriosPesquisa = new CriteriosPesquisa() { FiltroSimples = txtFiltrar.Text, PaginaAtual = 1 };
                Session[Page.ToString()] = criteriosPesquisa;
            }
            else
            {
                criteriosPesquisa.FiltroSimples = txtFiltrar.Text;
                criteriosPesquisa.PaginaAtual = 1;
            }
        }

        private bool RestaurarPesquisa()
        {
            if (!IsPostBack && criteriosPesquisa != null)
            {
                txtFiltrar.Text = criteriosPesquisa.FiltroSimples;
                Pesquisar();
                return true;
            }
            return false;
        }

        protected void Todos()
        {
            txtFiltrar.Text = "";
            lblFiltro.Text = "Filtro:";
            string SQL = @" select IDT_TER, DSC_TER from Serix.SRX_TERRITORIOS"+_tabelaName+" order by DSC_TER ";
            QueryPaginada qy = null;
            try
            {
                qy = new QueryPaginada(BiblioPMS.ObterConexao(BiblioPMS.aplicacaoSNG, UsuAut.Login, BiblioPMS.Demo), SQL, BiblioSERIX.tamPag);
                gridView.DataSource = qy.Executar(criteriosPesquisa.PaginaAtual);
                gridView.DataBind();
                Navegador1.CarregueBotoes(qy.QtdLinhas());
            }
            catch
            {
                if (qy.EstadoConexao() == ConnectionState.Open)
                    qy.FecharConexao();
            }
            finally
            {
                if (qy.EstadoConexao() == ConnectionState.Open)
                    qy.FecharConexao();
            }
        }

        protected void Pesquisar()
        {
            QueryPaginada qy = null;
            try
            {
                //Se o filtro nao estiver vazio 
                if (txtFiltrar.Text != "")
                {
                    lblFiltro.Text = "Filtro: Descrição = '\'" + txtFiltrar.Text + "'\'.";
                    string SQL = @" SELECT IDT_TER, DSC_TER 
                                      FROM Serix.SRX_TERRITORIOS"+_tabelaName+@"  T 
                                      WHERE UPPER(T.dsc_ter) LIKE '%' || UPPER(:TERRITORIO) || '%'
                                      order by DSC_TER";
                    try
                    {
                        qy = new QueryPaginada(BiblioPMS.ObterConexao(BiblioPMS.aplicacaoSNG, UsuAut.Login, BiblioPMS.Demo), SQL, BiblioSERIX.tamPag);
                        qy.AdicionarParametro("TERRITORIO", DbType.String, txtFiltrar.Text);
                        gridView.DataSource = qy.Executar(criteriosPesquisa.PaginaAtual);
                        gridView.DataBind();
                        Navegador1.CarregueBotoes(qy.QtdLinhas());
                    }
                    catch
                    {
                        if (qy.EstadoConexao() == ConnectionState.Open)
                            qy.FecharConexao();
                        Todos();
                    }
                    finally
                    {
                        if (qy.EstadoConexao() == ConnectionState.Open)
                            qy.FecharConexao();
                    }
                }
                else
                    //Caso o filtro esteja vazio, mostre todos
                    Todos();
            }
            catch
            //Em caso de erro, mostra todos as unidades
            {
                if (qy.EstadoConexao() == ConnectionState.Open)
                    qy.FecharConexao();
                Todos();
            }
        }

        protected void btnNovoTerritorio_Click(object sender, EventArgs e)
        {
            Response.Redirect("TerritoriosManut.aspx?OP=I&tpo="+Request["tpo"]);
        }

        protected void btnPequisar_Click(object sender, EventArgs e)
        {
            criteriosPesquisa.PaginaAtual = 1;
            Pesquisar();
            SalvarPesquisa();
        }

        protected void btnTodos_Click(object sender, EventArgs e)
        {
            criteriosPesquisa.PaginaAtual = 1;
            Todos();
            SalvarPesquisa();
        }

        protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            string tpo = "&tpo=" + Request["tpo"];
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    string IDT_TER = ((DbDataRecord)e.Row.DataItem)["IDT_TER"].ToString();
                    ((HyperLink)e.Row.Cells[gridView.Columns.Count - 4].Controls[1]).NavigateUrl = "TerritoriosManut.aspx?OP=R&idt_ter=" + Server.UrlEncode(Criptografia.Criptografar(IDT_TER))+tpo;
                    ((HyperLink)e.Row.Cells[gridView.Columns.Count - 3].Controls[1]).NavigateUrl = "TerritoriosManut.aspx?OP=U&idt_ter=" + Server.UrlEncode(Criptografia.Criptografar(IDT_TER))+tpo;
                    ((HyperLink)e.Row.Cells[gridView.Columns.Count - 2].Controls[1]).NavigateUrl = "TerritoriosManut.aspx?OP=DATANASC_CONJUGE&idt_ter=" + Server.UrlEncode(Criptografia.Criptografar(IDT_TER))+tpo;
                    ((DropDownList)e.Row.Cells[gridView.Columns.Count - 1].Controls[1]).Attributes.Add("chave", Server.UrlEncode(Criptografia.Criptografar(IDT_TER)));
                    //SEGURANÇA
                    ((HyperLink)e.Row.Cells[gridView.Columns.Count - 4].Controls[1]).Enabled = !PermissaoManut.Equals(Constantes.PERM_NEGADA);
                    ((HyperLink)e.Row.Cells[gridView.Columns.Count - 3].Controls[1]).Enabled = PermissaoManut.Equals(Constantes.PERM_MANUTENCAO);
                    ((HyperLink)e.Row.Cells[gridView.Columns.Count - 2].Controls[1]).Enabled = PermissaoManut.Equals(Constantes.PERM_MANUTENCAO);

                }
            }
        

        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (((DropDownList)sender).SelectedIndex == 1)
            {
                string chave = ((DropDownList)sender).Attributes["chave"];
                Response.Redirect("UnidadesRegionais.aspx?idt_ter=" + chave);
            }
        }


    }
}
